Oficina:
webscraping e conexÔes

Fernando CorrĂȘa

Curso-R

13 de Junho, 2017

Sobre a Curso-R

  • Premissas:
    • big data e analytics sĂŁo as buzzwords do momento.
    • Gostamos de trabalhar juntos.
    • Somos proficientes em R.
  • Surgimento da empresa:

Por que aprender R?

Por que aprender R?

R \(\iff\) EstatĂ­stica

Ciclo da anĂĄlise de dados segundo George Box

Por que aprender R?

R \(\iff\) EstatĂ­stica

Ciclo da ciĂȘncia de dados segundo Hadley Wickham

Outline

  1. Fundamentos
  2. Exemplos:
    1. Dados de criminalidade
    2. InformaçÔes sobre filmes
    3. (talvez) SABESP

web scraping

  • Forma especial de import
  • Propriedades:
    • SistemĂĄtico
    • Sem intervenção humana
  • PropĂłsitos:
    • Monitorar informaçÔes
    • Montar bases de dados

web scraping

  • ExigĂȘncias:
    • Muita anĂĄlise de texto
    • Conhecimento sobre html
    • Conhecimento sobre o http

Protocolo http

RequisiçÔes do usuårio

[metodo] [caminho do arquivo] HTTP/[versĂŁo]
[campo1]: [valor] 
[campo2]: [valor]
 
[corpo da requisição]

Resposta do servidor

HTTP/[versĂŁo] [cĂłdigo do status]
[campo1]: [valor] 
[campo2]: [valor]

[conteĂșdo]

Formatos comuns

  • RequisiçÔes do usuĂĄrio:
    • GET, que nĂŁo tem corpo. SĂł recebe uma pĂĄgina.
    • POST, PUT, tĂȘm corpo. Recebe uma pĂĄgina em função de parĂąmetros.
    • FormulĂĄrios
  • Repostas:
    • CĂłdigo do status: 404 Ă© erro, 200 Ă© sucesso, etc


No R

  • cURL Ă© um software em C pra programar http em linhas de cĂłdigo
  • Em R, cURL recebeu um port feito pelo Jeroen Ooms, criado em 2014.
  • O Hadley Wickham fez uma API mais agradĂĄvel no pacote httr

Os 4 passos do web scraping

  1. Defina as pĂĄginas que vocĂȘ quer raspar.
  2. Identifique exatamente as requisiçÔes que produzem o que vocĂȘ quer.
  3. Construa um programa que imite as requisiçÔes que vocĂȘ faria manualmente.
  4. Repita o passo 3. quantas vezes quiser.

Primeiro exemplo: SSP/SP

SSP/SP

  • O que exatamente acontece?
    • POST parametrizado

SSP/SP

exemplo: rotten tomatoes

rotten tomatoes

rotten tomatoes

<div id="main_container" class="container ">
            <div class="col col-left-center col-full-xs">
            <div id="search-results-root"></div>
                    <script>
                        ...
                        {"actorCount":11,
                        "actors":[{
                          "name":"John Hughes",
                          "url":"/celebrity/1007319-john_hughes",
                          "image":".."}
                    </script>
            </div>
</div>

rotten tomatoes

  • Como restringir a tabela final?